home *** CD-ROM | disk | FTP | other *** search
/ START Magazine / START VOL 3 NO 7.st / KAMIKAZE.ARC / KAMIKAZE.H < prev    next >
Encoding:
C/C++ Source or Header  |  1988-11-14  |  3.4 KB  |  148 lines

  1.  
  2.  
  3. #define WORD int
  4. #define UWORD unsigned int
  5. #define NULL 0L
  6. typedef int (*Vector)();
  7. typedef unsigned char uchar;
  8. typedef unsigned short ushort;
  9.  
  10. extern long pt_to_long();
  11.  
  12. /* screen format defines */
  13. #define    XMAX    320
  14. #define    YMAX    200
  15. #define COLORS    16
  16. #define BITPLANES 4
  17. #define CH_WIDTH 8
  18. #define CH_HEIGHT 9
  19.  
  20. extern WORD *cscreen, *pscreen;        /* drawing and display screens */
  21. extern WORD sys_cmap[];            /* software echo of color map */
  22. extern WORD handle;
  23.  
  24. extern char bap_line_buf[];    /* a line buffer for byte-a-pixeling */
  25.  
  26. /* stuff for dynamic memory management */
  27. extern void *askmem(), *laskmem(), *begmem(), *begzeros(),*lbegmem(),
  28.     *askzeros(), *clone_structure();
  29. #define Alloc_a(type) (type *)askmem(sizeof(type) )
  30. #define Free_a(pt)    freemem(pt)
  31. #define Array_els(arr) (sizeof(arr)/sizeof(arr[0]))
  32.  
  33. extern long mem_free;        /* how much is left */
  34.  
  35. struct mblock    /* structure to keep track of free memory */
  36.     {
  37.     struct mblock *next;
  38.     long size;
  39.     };
  40.  
  41. /*  These are globals that contain the input state */
  42. extern WORD mouse_button, omouse_button;  /* button state and last state */
  43. extern WORD mouse_x, mouse_y;    /* the xy position of mouse */
  44. extern WORD lastx, lasty;    /* last mouse_x, mouse_y */
  45. extern WORD mouse_moved;    /* new mouse input? */
  46. extern WORD key_hit;            /* 1 if keyboard hit, 0 otherwise */
  47. extern long key_in;                /* What the extended character code 
  48.                                    for when key_hit = 1 */
  49.  
  50. /* These are macros on the mouse buttons */
  51. #define PDN (mouse_button & 0x100)
  52. #define RDN (mouse_button & 0x200)
  53. #define EDN (mouse_button & 0x300)
  54. #define PJSTDN ( (mouse_button & 0x100) && !(omouse_button & 0x100) )
  55. #define RJSTDN ( (mouse_button & 0x200) && !(omouse_button & 0x200) )
  56.  
  57. /* Arrow key definitions */
  58. #define LARROW    0x4b00
  59. #define RARROW    0x4d00
  60. #define UARROW    0x4800
  61. #define DARROW    0x5000
  62.  
  63. struct square
  64.     {
  65.     WORD x, y;  /* pixels */
  66.     WORD width, height;
  67.     struct piece *piece;
  68.     WORD color;
  69.     };
  70. typedef struct square Square;
  71. extern Square board[8][8];
  72.  
  73. struct piece_move
  74.     {
  75.     uchar dx, dy;
  76.     };
  77. typedef struct piece_move Piece_move;
  78.  
  79. struct move
  80.     {
  81.     struct move *next;
  82.     struct move *child;
  83.     char dx, dy;
  84.     struct piece *piece, *took_piece;
  85.     WORD value;
  86.     uchar flags;
  87.     uchar promotion;
  88.     };
  89. typedef struct move Move;
  90. #define MCHECKING    1
  91. #define MCHECKED    2
  92. #define MTAKING        4
  93. #define MTOOK        8
  94. #define MMATING        16
  95. #define MENPASSANT    32
  96. #define MCASTLING    64
  97. #define    MQUEENING    128
  98.  
  99. #define HSZ 1024
  100. extern Move *history[HSZ];
  101. extern ushort move_count;
  102. extern WORD move_color;
  103. extern Move probable_moves[];
  104. extern WORD probable_count;
  105. extern Move *sorted_moves[];
  106. extern WORD sorted_count;
  107.  
  108. #define WHITE    0
  109. #define BLACK    1
  110.  
  111. #define WHITE_COLOR 2
  112. #define BLACK_COLOR 3
  113.  
  114. #define KING    0
  115. #define QUEEN    1
  116. #define ROOK    2
  117. #define BISHOP    3
  118. #define KNIGHT    4
  119. #define PAWN    5
  120.  
  121. #define KING_IX 3
  122. #define QUEEN_IX 4
  123. #define PAWN_IX    8
  124. struct piece
  125.     {
  126.     char column, row; /* 0 to 7 */
  127.     WORD flags;    /* dead, alive ??*/
  128.     char type;
  129.     char color;
  130.     char *name;
  131.     unsigned WORD *image;
  132.     Vector legal;    /* boolean, returns true if move legal */
  133.     Piece_move *lmoves;
  134.     WORD lmove_count;
  135.     WORD value;        /* pawn = 1 ... king = 128 I guess... */
  136.     WORD id;    /* value 0-16 to identify */
  137.     WORD move_count;
  138.     };
  139. typedef struct piece Piece;
  140. extern Piece black_pieces[16], white_pieces[16];
  141. extern Piece *pieces[2];
  142. extern int living[2];
  143. #define PDEAD 1
  144. #define PMOVED 2
  145.  
  146.  
  147. extern char must_take;
  148.